What is webcrypto-core?
The webcrypto-core package is a JavaScript implementation of the Web Cryptography API specification. It provides a common interface for cryptographic operations such as hashing, signing, encryption, decryption, and key generation. This package is designed to be extensible, allowing for the addition of new cryptographic algorithms and their parameters.
What are webcrypto-core's main functionalities?
Hashing
This feature allows for the hashing of data using various algorithms. The code sample demonstrates how to hash a message using the SHA-256 algorithm.
const { Sha256 } = require('webcrypto-core');
let sha256 = new Sha256();
sha256.digest({name: 'SHA-256'}, Buffer.from('message')).then(digest => {
console.log(digest);
});
Encryption/Decryption
This feature enables encryption and decryption of data. The code sample shows how to encrypt data using the AES-GCM algorithm.
const { AesGcm } = require('webcrypto-core');
let aesGcm = new AesGcm();
aesGcm.encrypt({name: 'AES-GCM', iv: Buffer.from(iv)}, key, Buffer.from(data)).then(encrypted => {
console.log(encrypted);
});
Signing/Verification
This feature is used for signing data and verifying signatures. The code sample illustrates how to sign data using the RSA-PSS algorithm.
const { RsaPss } = require('webcrypto-core');
let rsaPss = new RsaPss();
rsaPss.sign({name: 'RSA-PSS', saltLength: 32}, privateKey, Buffer.from(data)).then(signature => {
console.log(signature);
});
Other packages similar to webcrypto-core
node-webcrypto-ossl
This package is an implementation of the Web Cryptography API based on OpenSSL. It provides similar functionalities to webcrypto-core but is specifically designed for Node.js environments and leverages OpenSSL for cryptographic operations.
crypto-browserify
A reimplementation of Node's 'crypto' module for the browser. While webcrypto-core focuses on providing a common interface for cryptographic operations, crypto-browserify aims to mimic Node.js's crypto module, making it easier for developers to write code that works both in Node.js and in the browser.
webcrypto-core
We have created a number of WebCrypto polyfills including: node-webcrypto-ossl, node-webcrypto-p11, and webcrypto-liner. webcrypto-core
was designed to be a common layer to be used by all of these libraries for input validation.
Unless you intend to create a WebCrypto polyfill this library is probably not useful to you.
Dependencies
Install all dependencies
npm install
NOTE: npm install
command downloads and installs modules to local folder.
You can install all dependencies globally
typescript
npm install typescript --global
rollup
npm install rollup --global
mocha
npm install mocha --global
Single line command for all modules
npm install typescript rollup mocha --global
Compilation
Compile the source code using the following command:
npm run build
NOTE: Command creates webcrypto-core.js
and webcrypto-core.min.js
files in build
folder
Compile the source code with declaration using the next command:
tsc --declaration
Test
npm test
Size
Files | Size |
---|
webcrypto-core.js | 59Kb |
webcrypto-core.min.js | 25Kb |